#pragma once

#include <Arduino.h>
#include <vector>

class Uri {

protected:
    const String _uri;

public:
    Uri(const char *uri) : _uri(uri) {}
    Uri(const String &uri) : _uri(uri) {}
    Uri(const __FlashStringHelper *uri) : _uri(String(uri)) {}
    virtual ~Uri() {}

    virtual Uri* clone() const {
        return new Uri(_uri);
    };

    virtual void initPathArgs(__attribute__((unused)) std::vector<String> &pathArgs) {}

    virtual bool canHandle(const String &requestUri, __attribute__((unused)) std::vector<String> &pathArgs) {
        return _uri == requestUri;
    }
};
